00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 if ( !defined("PATH_TO_ROOT") ) {
00026 define( "PATH_TO_ROOT", "../../" );
00027 }
00028
00036 require_once (PATH_TO_ROOT."common/classes/class.dateselection.inc.php");
00038 require_once (PATH_TO_ROOT."common/classes/class.formular.inc.php");
00039 require_once (PATH_TO_ROOT."roleplay/classes/class.roleartefacts.inc.php");
00040 require_once (PATH_TO_ROOT."teams/classes/class.teamartefacts.inc.php");
00047 class Edit {
00053 private $role = null;
00059 private $team = null;
00064 function __construct() {
00065 if (isset($_SESSION["roleID"])) {
00066 $this->role = new Role($_SESSION["roleID"]);
00067 }
00068 if (isset($_SESSION["teamID"])) {
00069 $this->team = new Team($_SESSION["teamID"]);
00070 }
00071 }
00077 public function showForm($editID) {
00078 global $db, $EZSQL_ERROR;
00079
00080 $time = time();
00081 $sql_add = "";
00082 $heute = getdate();
00083 $course = $_SESSION['course'];
00084 $form = new Formular();
00085
00086
00087 $calendar = new DateSelection($heute['mday'], $heute['mon'], $heute['year'], $heute['hours'], $heute['minutes']);
00088
00089 $calendar->autoUpdate = false;
00090
00091 $calendar->formName = "insert";
00092
00093 $calendar->clearStrings();
00094
00095 $query = "SELECT fileID, courseID, name, link, parent_object, description, userID, type, visible_type, start_time, end_time, student_write, parent_object FROM filelist WHERE fileID='".$editID."'";
00096 $editFile = $db->get_row($query);
00097 if (is_null($editFile)) return false;
00098
00099 if ($_SESSION['course'] != 0 && $editFile->courseID == 0) {
00100 echo "<table width='100%' class='center'>";
00101 Output::errorMessage("Sie können keine Foyer-Ressourcen im Kurs bearbeiten. Bitte gehen Sie hierzu ins Foyer!");
00102 echo "</table>";
00103 return false;
00104 }
00105
00106 if (($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS || $_SESSION['usergroup'] == SCHUELER || $_SESSION['usergroup'] == GAST)
00107 && $editFile->userID != $_SESSION['userid']) {
00108 echo "<table width='100%' class='center'>";
00109 Output::errorMessage("Sie sind nicht berechtigt, diese Datei zu editieren.<br/>Nur Admins (Dozent/Tutor) oder der Besitzer der Datei darf das!");
00110 echo "</table>";
00111 return false;
00112 }
00113
00114
00115 $form->setFormHead("edit");
00116 $form->setTemplate("<table>", "<tr><td class='tableCell'>", "<td class='tableCell'>");
00117 $form->setButtons(1, "Abschicken");
00118 $form->addInput("hidden", "fileID", "", 30, $editID);
00119 $TYPE = $editFile->type;
00120 if ($editFile->parent_object == 0) $TYPE = "ROOT";
00121 $form->addInput("hidden", "type", "", 30, $TYPE);
00122 if (isset($this->role)) {
00123 $form->addRawCode("<tr><td class='message' colspan='2'>Sie nehmen zur Zeit die Rolle <strong>".Data::toHTML($this->role->getName($_SESSION["gender"]), false) ."</strong> ein.<br />Wenn Sie ein Element bearbeiten, wird dieses unter Ihrem Rollennamen veröffentlicht.</td></tr>");
00124 }
00125
00126 $form->addRawCode("<tr><td class='tableHead' colspan='2'>Benötigte Einstellungen</td></tr>");
00127 if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST)
00128 && $editFile->type == "folder") $form->addInput("checkbox", "student_write", "Schreibberechtigung für Studenten", 30, 1, $editFile->student_write);
00129 $form->addInput("text", "name", "<strong>Link:</strong> Bitte geben Sie einen Namen für den Link an.<br/><strong>Ordner: </strong>Bitte geben Sie einen erläuternden Namen (Tooltip) für den Ordner an.<br/><span class='text10'>(max. 40 Zeichen)></span>", 41, $editFile->name, 40);
00130 if ($editFile->type != "file") $form->addInput("text", "userfile", "<strong>Link:</strong> Bitte geben Sie eine URL ein.<br/><strong>Ordner: </strong>Bitte geben Sie einen Ordnernamen ein.<br/><span class='text10'>(OrdnerName=>max. 20 Zeichen)</span>", 41, $editFile->link);
00131 else $form->addInput("hidden", "userfile", "", 41, $editFile->link);
00132
00133 if ($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS || $_SESSION['usergroup'] == SCHUELER || $_SESSION['usergroup'] == GAST)
00134 $sql_add = "AND (userID='".$_SESSION['userid']."' OR (visible_type='1' AND start_time<'$time' AND end_time>'$time' AND student_write=1) )";
00135 else if ($_SESSION['usergroup'] == SEKRETARIAT)
00136 $sql_add = "AND (userID='".$_SESSION['userid']."' OR visible_type<=2)";
00137
00138 $folderArr = NULL;
00139 $this->printSubFolder(0, $sql_add, $folderArr, 0, "", $editFile->parent_object, $editID);
00140 $form->addSelect("folder", "Bitte geben Sie den Zielordner an<br/><span class='text10'><em> (ist ohne Bedeutung, wenn Sie einen Hauptordner anlegen.)</em></span>", $folderArr, 10, false, $editFile->parent_object);
00141 $form->addTextArea("comment", "Datei-Beschreibung (optional)<br/><span class='text10'><em> (max. 255 Zeichen)</em></span>", 40, 3, $editFile->description);
00142 $visibleArr = array(array("Alle", "1"), array("Dozenten und Tutoren", "2"), array("Dozenten", "3"));
00143 $form->addSelect("visible", "Wählen Sie hier die Benutzergruppe aus, die Ihren Eintrag sehen darf:", $visibleArr, 1, false, $editFile->visible_type);
00144 $form->addButtons();
00145
00146 if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"])
00147 || (($_SESSION['usergroup'] == STUDENT || $_SESSION['usergroup'] == ALUMNUS) && $course > 0)) {
00148
00149 $form->addRawCode("<tr><td class='tableHead' colspan='2'>Optionale Einstellungen</td></tr>");
00150
00151 if ($course == 0) $names = $db->get_results("SELECT ID, Vorname, Nachname FROM user WHERE Usergroup > 1 AND Invisible = 0 AND ID <> ".$_SESSION["userid"]." ORDER BY Nachname, Vorname");
00152 else $names = $db->get_results("SELECT ID, Vorname, Nachname, user_course.courseID FROM user, user_course WHERE user.ID=user_course.userID AND user_course.courseID='$course' AND Usergroup > 1 AND userID <> ".$_SESSION["userid"]." ORDER BY Nachname, Vorname");
00153
00154 $COUNT = 0;
00155 if (is_array($names)) {
00156 $visibleUsers = $db->get_col("SELECT userID FROM filevisible WHERE fileID='".$editID."'");
00157 foreach($names as $name) {
00158 $visibleListArr[$COUNT][0] = Data::toHTML($name->Nachname.", ".$name->Vorname, false);
00159 $visibleListArr[$COUNT++][1] = $name->ID;
00160 }
00161 }
00162 if (is_array($visibleListArr)) $form->addSelect("visibleList", "Hier können Sie zusätzliche Personen auswählen, die Ihren Eintrag sehen dürfen:<br/>(Für Mehrfachselektierung STRG-Taste beim Klicken gedrückt halten.)<br/>(wird ignoriert, wenn als Benutzergruppe "Alle" ausgewählt ist!)", $visibleListArr, 10, true, $visibleUsers);
00163 }
00164 if (($_SESSION['usergroup'] != STUDENT && $_SESSION['usergroup'] != ALUMNUS && $_SESSION['usergroup'] != SCHUELER && $_SESSION['usergroup'] != GAST) || isset($_SESSION["assistent"])) {
00165 $form->addMarker();
00166 $form->addButtons();
00167 echo $form->getForm(0);
00168
00169
00170 ?>
00171 <tr>
00172 <td class='tableCell'>Für welche Zeit sichtbar?<br/><span class='text10'><em>(wenn Sie nichts auswählen ist der Eintrag immer sichtbar)</em></span></td>
00173 <td class='tableCell'>Anzeigebeginn Datum/Zeit:<br/>
00174 <?php
00175 if ($editFile->start_time > 0) {
00176 $Date = getdate($editFile->start_time);
00177 $calendar->setDate($Date['mday'], $Date['mon'], $Date['year']);
00178 $calendar->setTime($Date['hours'], $Date['minutes']);
00179 }
00180 if (isset($_POST['okButton'])) {
00181
00182 $calendar->setDate($_POST['openDate_day'], $_POST['openDate_month'], $_POST['openDate_year']);
00183 $calendar->setTime($_POST['openDate_hour'], $_POST['openDate_minute']);
00184 }
00185
00186 $calendar->printCalender("openDate", "dateExt");
00187 $calendar->printCalender("openDate", "time");
00188 echo "<br/><br/>Anzeigeende Datum/Zeit:<br/>";
00189 if ($editFile->end_time < 2147483647) {
00190 $Date = getdate($editFile->end_time);
00191 $calendar->setDate($Date['mday'], $Date['mon'], $Date['year']);
00192 $calendar->setTime($Date['hours'], $Date['minutes']);
00193 }
00194 if (isset($_POST['okButton'])) {
00195
00196 $calendar->setDate($_POST['closeDate_day'], $_POST['closeDate_month'], $_POST['closeDate_year']);
00197 $calendar->setTime($_POST['closeDate_hour'], $_POST['closeDate_minute']);
00198 }
00199 $calendar->printCalender("closeDate", "dateExt");
00200 $calendar->printCalender("closeDate", "time");
00201 echo " </td>\n</tr>\n";
00202
00203 echo $form->getForm(1);
00204 } else {
00205 echo $form->getForm();
00206 }
00207 }
00219 private function printSubFolder($fileID, $sql_add, &$folderArr, $COUNT = 0, $layer = "··", $selectedFile = "", $fileSelf = "") {
00220 global $db;
00221 $folders = $db->get_results("SELECT fileID, link, student_write, userID FROM filelist WHERE parent_object='".$fileID."' AND courseID=".$_SESSION['course']." AND type='folder' $sql_add ORDER BY name");
00222 if ($selectedFile > 0 && $COUNT == 0 && ($_SESSION["usergroup"] == ADMIN || ($_SESSION["usergroup"] == DOZENT && $_SESSION["course"] > 0) || isset($_SESSION["assistent"]))) {
00223 $folderArr[$COUNT++] = array("Zum Hauptordner machen", 0);
00224 }
00225 if ($folders) foreach($folders as $folder) {
00226 if ($fileSelf == $folder->fileID) {
00227 continue;
00228 } elseif ($selectedFile == $folder->fileID) {
00229 $folderArr[$COUNT][0] = $layer." • ".Data::toHTML($folder->link, false);
00230 $folderArr[$COUNT++][1] = $folder->fileID;
00231 } else {
00232 $folderArr[$COUNT][0] = $layer." • ".Data::toHTML($folder->link, false);
00233 $folderArr[$COUNT++][1] = $folder->fileID;
00234 }
00235 $COUNT = $this->printSubFolder($folder->fileID, $sql_add, $folderArr, $COUNT, $layer."··", $selectedFile, $fileSelf);
00236 }
00237 return $COUNT;
00238 }
00245 public function resolveForm($data) {
00246 global $db, $EZSQL_ERROR;
00247 echo "<table>";
00248
00249 if ($data['link'] == "" && $data['type'] != "file") {
00250 switch ($data['type']) {
00251 case 'ROOT':
00252 case 'folder':
00253 $ERROR = "Sie haben keinen Ordnernamen angegeben!";
00254 break;
00255
00256 case 'link':
00257 $ERROR = "Sie haben keinen Link angegeben!";
00258 break;
00259 }
00260 Output::errorMessage($ERROR, 2);
00261 }
00262 if ($data['name'] == "") {
00263 switch ($data['type']) {
00264 case 'ROOT':
00265 case 'folder':
00266 $ERROR = "Sie haben keinen erläuternden Ordnernamen (Tooltip) angegeben!";
00267 break;
00268
00269 case 'link':
00270 $ERROR = "Sie haben keinen Namen für den Link angegeben!";
00271 break;
00272
00273 case 'file':
00274 $ERROR = "Sie haben keinen Namen für die Datei angegeben!";
00275 break;
00276 }
00277 Output::errorMessage($ERROR, 2);
00278 }
00279 if ($data['parent_object'] == "" && $data['type'] != 'ROOT') {
00280 $ERROR = "Sie haben keinen Zielordner ausgewählt!";
00281 Output::errorMessage($ERROR, 2);
00282 }
00283 if ($data['type'] == 'link') {
00284 if (!Utilities::validateURL($data['link'])) {
00285 $ERROR = "Sie haben eine ungültige URL angegeben!";
00286 Output::errorMessage($ERROR, 2);
00287 }
00288 if (strlen($data['name']) > 40) {
00289 $ERROR = "Linkname darf höchstens 40 Zeichen lang sein.";
00290 Output::errorMessage($ERROR, 1);
00291 }
00292 }
00293 if ($data['type'] == 'folder') {
00294 if (strlen($data['link']) > 20) {
00295 $ERROR = "Ordnername darf höchstens 20 Zeichen lang sein.";
00296 Output::errorMessage($ERROR, 1);
00297 }
00298 }
00299
00300 if (isset($ERROR)) {
00301 echo "</table>";
00302 return false;
00303 }
00304
00305 switch ($data['type']) {
00306 case 'ROOT':
00307 $data['type'] = 'folder';
00308 $type = "von Hauptordner";
00309 break;
00310
00311 case 'folder':
00312 $type = "von Ordner";
00313 break;
00314
00315 case 'link':
00316 $type = "von Link";
00317 break;
00318
00319 case 'file':
00320 $type = "von Datei";
00321 break;
00322 }
00323
00324
00325 $SQLdata = "";
00326 foreach($data as $key => $value) {
00327 if (!strstr($key, "tmp")) {
00328 $SQLdata.= $key."='".Data::toMysql($value) ."',";
00329 }
00330 }
00331 $SQL = "UPDATE filelist SET ".substr($SQLdata, 0, -1) ." WHERE fileID='".$data['fileID']."' ";
00332 $errorCount = count($EZSQL_ERROR);
00333 $db->query($SQL);
00334 if (count($EZSQL_ERROR) > $errorCount || $data['fileID'] < 0) {
00335 Output::errorMessage("Fehler beim Anlegen ".$type." in der Datenbank!");
00336 echo "</table>";
00337 return false;
00338 }
00339 if (isset($this->role)) {
00340 RoleArtefacts::setRoleForItem(RESSOURCE, (int)$data["fileID"], $_SESSION["roleID"]);
00341 } else {
00342 RoleArtefacts::deleteItem(RESSOURCE, (int)$data["fileID"]);
00343 }
00344 if (isset($this->team)) {
00345 TeamArtefacts::setTeamForItem(RESSOURCE, (int)$data["fileID"], $_SESSION["teamID"]);
00346 } else {
00347 TeamArtefacts::deleteItem(RESSOURCE, (int)$data["fileID"]);
00348 }
00349
00350
00351 $db->query("DELETE FROM filevisible WHERE fileID='".$data['fileID']."'");
00352 if ($data['fileID'] && $data['visible_type'] != 1 && isset($data['tmpfileVisibleList'])) {
00353
00354 $errorCount = count($EZSQL_ERROR);
00355 foreach($data['tmpfileVisibleList'] as $value) {
00356 $db->query("INSERT INTO filevisible (fileID,userID) VALUES(".$data['fileID'].",".$value.")");
00357 }
00358 if (count($EZSQL_ERROR) > $errorCount) {
00359 Output::errorMessage("Aktion nicht erfolgreich durchgeführt!", 1);
00360 echo "</table>";
00361 return false;
00362 }
00363 }
00364 Output::echoMessage("Aktion wurde erfolgreich durchgeführt !", 1);
00365 echo "</table>";
00366 return true;
00367 }
00368 }
00369 ?>